package com.rockwell.sniffyhunter.utils;

import com.rockwell.sniffyhunter.model.EntranceLocator;

public enum EntranceLocatorState implements IStateMachine {
	START {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).start();
		}
	},
	JOG_ALONG_MAZE_WALL {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).jogAlongMazeWall();
		}
	},
	RECOVER_JOG_ALONG_MAZE_WALL {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).recoverJogAlongMazeWall();
		}
	},
	SCAN {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).scan();
		}
	},
	STOP_JOG {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).stopJog();
		}
	},
	OVERTRAVEL_OUT_OF_MAZE_WALL {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).overtravelOutOfMazeWall();
		}
	},
	OVER_JOG_OUT_OF_MAZE_WALL {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).overJogOutOfMazeWall();
		}
	},
	CHECK_OVER_JOG_OUT_OF_MAZE_WALL_DONE {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).checkOverJogOutOfMazeWallDone();
		}
	},
	TURN {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).turn();
		}
	},
	OVERTURN {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).overturn();
		}
	},
	CHECK_OVERTURN_DONE {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).checkOverturnDone();
		}
	},
	OVERTRAVEL_AFTER_TURN {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).overTravelAfterTurn();
		}
	},
	TURN_BACK_OVERTRAVEL_AFTER_TURN {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).turnBackAfterCheckOverturn();
		}
	},
	CHECK_TURN_BACK_OVERTRAVEL_AFTER_TURN_DONE {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).checkturnBackAfterCheckOverturnDone();
		}
	},
	DETECT_NEXT_MAZE_WALL {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).detectNextMazeWall();
		}
	},
	RECOVER_FRONT_WALL_HIT {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).recoverFrontWallHit();
		}
	},
	OVERTURN_TO_LOCATE_MAZE_WALL {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).overturnToLocateMazeWall();
		}
	},
	CHECK_OVERTURN_TO_LOCATE_MAZE_WALL_DONE {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).checkOverturnToLocateMazeWallDone();
		}
	},
	PICK_TREASURE {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((EntranceLocator)stateObject).pickTreasure();
		}
	},
	DONE {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return START;
		}
	};
}
